//###############
// FILE : Conditionable.java
// WRITER : Lior Zimmerman liorz06 066462300
// WRITER : Ohad Dan ohad_dan 036767960
// EXERCISE : oop ex3 2008
// DESCRIPTION:Can-Have-Boolean-Status interface.
//###############
package oop.ex3.fileSearchModel.filters;
import oop.ex3.fileSearchModel.filters.exceptions.*;

import java.io.File;
import java.util.ArrayList;

/**  
 * Can-Have-Boolean-Status interface.
 */
public interface Conditionable {
	/**
     * Returns the status of the condition.
     * @return Status of the condition.
     * @throws FilterDataException In case of wrong filter parameters. 
     */
    public STATUS getCondition() throws FilterDataException;
	/**
     * Sets the status of the condition.
     * @throws FilterDataException In case of wrong filter parameters. 
     */
    public void calculate() throws FilterDataException;
    /**
     * Possible values for condition.
     */
    public enum STATUS {
        TRUE, FALSE, UNKNOWN
    }
	/**
	 * Resets object data.
	 * @param resetData Reset data.
	 * @param Source Source directory.
	 */
	public void reset(File resetData, String Source);
	/**
	 * Sets the condition.
	 * @param status The status to be set.
	 */
	public void setCondition( STATUS status );
    /**
     * Returns a list with all the byte filters.
     * @return A list with all the byte filters.
     */
    public ArrayList<Filter> getByteList();
    /**
     * Returns a list with all the text filters.
     * @return A list with all the text filters.
     */
    public ArrayList<Filter> getTextList();

}
